home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SWAG / SWAGA_C / CURSOR.SWG / 0017_CURSOR Control.pas < prev    next >
Pascal/Delphi Source File  |  1993-10-28  |  3KB  |  126 lines

  1. {===========================================================================
  2. Date: 08-27-93 (14:17)
  3. From: LIM FUNG
  4. Subj: cursor control
  5.  
  6. WD>Hi All,
  7. WD>   Hey, someone put a couple of little proc. on here which control the
  8. WD>cursor (turn it on/off) and they were written in assembler.  I had a
  9. WD>brain fade and forgot to save the name of the person who created these
  10. WD>routines.  I was wondering if they might know how to get a big cursor
  11. WD>also using assembler.  Also, do they work on monochrome monitors, or was
  12. WD>that what you meant about the 8x8 scan lines?
  13.  
  14. Okay, a simple procedure to turn on and off the cursor would be as
  15. follows: }
  16.  
  17.  
  18. Uses DOS;
  19.  
  20. Procedure CursorOn;
  21. Begin
  22.         asm
  23.                 mov        ax,0100h
  24.                 mov        cx,0607h
  25.                 int        10h
  26.         end;
  27. end;
  28.  
  29. Procedure CursorOff;
  30. Begin
  31.         asm
  32.                 mov        ax,0100h
  33.                 mov        cx,2020h
  34.                 int        10h
  35.         end;
  36. end;
  37.  
  38. end.
  39.  
  40. ===========================================================================
  41.  BBS: Canada Remote Systems
  42. Date: 10-23-93 (07:59)             Number: 9355
  43. From: LOU DUCHEZ                   Refer#: NONE
  44.   To: JESSE MACGREGOR               Recvd: NO  
  45. Subj: help                           Conf: (1617) L-Pascal
  46. ---------------------------------------------------------------------------
  47. JM>I need help I need a function that when I give it a screen coordiante
  48. JM>and it returns the charachter at that coordinate on a text screen
  49. JM>(80x25) and possibly the color...
  50.  
  51. Try this:
  52.  
  53. -------------------------------------------------------------------------------
  54.  
  55. type  videolocation = record                  { video memory locations }
  56.           videodata: char;                    { character displayed }
  57.           videoattribute: byte;               { attributes }
  58.           end;
  59.  
  60. ---------------
  61.  
  62. procedure getvideodata(x, y: byte; var result: videolocation);
  63.  
  64. { Returns the attribute byte of a video character. }
  65.  
  66. var vidptr: ^videolocation;
  67. begin
  68.   if memw[$0040:$0049] = 7 then vidptr := ptr($b000, 2*(80*(y-1) + (x-1)))
  69.                            else vidptr := ptr($b800, 2*(80*(y-1) + (x-1)));
  70.   result := vidptr^;
  71.   end;
  72.  
  73. -------------------------------------------------------------------------------
  74.  
  75.  
  76. JM>also, a procedure to make that icky
  77. JM>cursor go away would be greatly appreciated...
  78.  
  79. There's not really a procedure to make it "go away", just to change it.
  80. You CAN change it so that it's undisplayable, but you'll want to store
  81. the previous config first.  Like so:
  82.  
  83. -------------------------------------------------------------------------------
  84.  
  85. var crstyp: word;
  86.  
  87. ---------------
  88.  
  89. procedure cursoff;
  90. const ffff: word = $ffff;
  91.  
  92. { Turns the cursor off.  Stores its format for later redisplaying. }
  93.  
  94. begin
  95.   asm
  96.     mov ah, 03h
  97.     mov bh, 00h
  98.     int 10h
  99.     mov crstyp, cx
  100.     mov ah, 01h
  101.     mov cx, ffff
  102.     int 10h
  103.     end;
  104.   end;
  105.  
  106. ---------------
  107.  
  108. procedure curson;
  109.  
  110. { Turns the cursor back on, using the cursor display previously stored. }
  111.  
  112. begin
  113.   asm
  114.     mov ah, 01h
  115.     mov cx, crstyp
  116.     int 10h
  117.     end;
  118.   end;
  119.  
  120. -------------------------------------------------------------------------------
  121.  
  122. How's that, o evil masters?
  123. ---
  124.  ■ KingQWK 1.05 # 182 ■ "Bob" -- the Doc Savage of holy men
  125.  ■ RoseMail 2.10ß: ILink: PC-Ohio * Cleveland, OH * 216-381-3320
  126.